package model.entity;

import java.util.HashSet;

import model.ability.PassiveSkill;
import model.core.AbilitiesLibrary;
import model.item.OneHandedWeapon;
import model.item.StaffWeapon;
import model.item.TwoHandedWeapon;
import model.map.MapPoint;
import model.stats.StatsContainer;

public class Summoner extends Avatar{
	private PassiveSkill bane;
	private PassiveSkill boon;
	private PassiveSkill enchant;
	private PassiveSkill staff;
	
	public Summoner(String name, MapPoint origin, StatsContainer stats,
			MovementType movement, int obs, int bar, int bind, DirectionalGraphicSet graphics){
		super(name, "smasher", origin, stats,
				movement, obs, bar, bind, graphics);
		bane=new PassiveSkill("bane");
		boon=new PassiveSkill("boon");
		enchant=new PassiveSkill("enchant");
		staff=new PassiveSkill("staff");
		defaultAttack=AbilitiesLibrary.getInstance().getMapAbility("fisting");
	}
	
	public Summoner(){
		super();
		bane=new PassiveSkill("bane");
		boon=new PassiveSkill("boon");
		enchant=new PassiveSkill("enchant");
		staff=new PassiveSkill("staff");
		defaultAttack=AbilitiesLibrary.getInstance().getMapAbility("fisting");
	}
	
	/**
	 * this method will define the generation of the level up window defining which properties 
	 * are to be leveled.
	 */
	public void levelup(){
		super.levelup();
		stats.levelIntellect(3);
		stats.levelAgility(1);
		stats.levelHardiness(1);
		stats.levelStrength(1);
	}
	
	/**
	 * Equip methods define how (or if) a class can equip the particular weapon type.
	 */
	public void equipOneHandedWeapon(OneHandedWeapon weapon){
		return;
	}
	
	public void equipTwoHandedWeapon(TwoHandedWeapon weapon ){
		return;
	}
	
	public void equipBrawlingWeapon(){
		return;
	}
	
	public void equipRangedWeapon(){
		return;
	}

	public void equipStaff(StaffWeapon weapon){
		super.equipStaff(weapon);
		defaultAttack=AbilitiesLibrary.getInstance().getMapAbility("staff");
		defaultAttack.setGoverningSkill(staff);
	}
	public void enchant(int i) {

	}
    
    public HashSet<PassiveSkill> getSkillList(){
    	HashSet<PassiveSkill> skillList=super.getSkillList();
    	skillList.add(bane);
    	skillList.add(boon);
    	skillList.add(enchant);
    	skillList.add(staff);
    	return skillList;
    }
}
